﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ServiceSATT;
using ApplicationContext;

namespace UI_SATT
{
    public partial class FrmListaPartidos : Form, IListadoEventos, IListadoTorneos, IListadoPartidos
    {
        string ImplementaEventos = "EventoService";
        string ImplementaTorneos = "TorneoService";
        string ImplementaPartidos = "PartidoService";
        IEventoService eventosServicio;
        ITorneoService torneoServicio;
        IPartidoService partidoServicio;
        string[][] ListadoPartidos;
        string[][] ListadoDeTorneos;
        public FrmListaPartidos()
        {
            InitializeComponent();
        }

        private void FrmListaPartidos_Load(object sender, EventArgs e)
        {
            eventosServicio = (IEventoService)AppContext.Instance.GetObject(ImplementaEventos);
            eventosServicio.Listar(this);
            torneoServicio = (ITorneoService)AppContext.Instance.GetObject(ImplementaTorneos);
            partidoServicio = (IPartidoService)AppContext.Instance.GetObject(ImplementaPartidos);
        }

        #region Miembros de IListadoEventos

        public List<string> ListaEventos
        {
            set 
            { 
                CboListaEventos.DataSource = value;
                CboListaEventos.SelectedIndex = -1;
            }
        }

        #endregion

        #region Miembros de IListadoTorneos

        public string Evento
        {
            get { return CboListaEventos.SelectedItem.ToString(); }
        }

        public string[][] ListaTorneos
        {
            set 
            {
                ListadoDeTorneos = value;
                if (CboListaTorneos.Items.Count > 0)
                    CboListaTorneos.Items.Clear();
                foreach (string[] Valor in value)
                {
                    CboListaTorneos.Items.Add(Valor[0] + ", " + Valor[1] + ", " + Valor[2]);
                }
            }
        }

        #endregion

        private void CboListaEventos_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (CboListaEventos.SelectedIndex > -1)
                torneoServicio.Listar(this);
        }

        private void CboListaTorneos_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (CboListaTorneos.SelectedIndex > -1)
                partidoServicio.Listado(this);
        }

        private void CboListaTorneos_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void CboListaEventos_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        #region Miembros de IListadoPartidos

        public string Torneo
        {
            get { return CboListaTorneos.SelectedItem.ToString(); }
        }

        public string[][] Listado
        {
            set 
            {
                ListadoPartidos = value;
                if(DgvListaPartidos.Columns.Count == 0)
                {
                    DgvListaPartidos.Columns.Add("Sede", "Donde se juega");
                    DgvListaPartidos.Columns.Add("Cancha", "Cancha");
                    DgvListaPartidos.Columns.Add("Fecha", "Fecha");
                    DgvListaPartidos.Columns.Add("Ronda", "Ronda");
                    DgvListaPartidos.Columns.Add("Estado", "Estado");
                    DgvListaPartidos.Columns.Add("Resultado", "Resultado");
                }
                if (DgvListaPartidos.Rows.Count > 0)
                    DgvListaPartidos.Rows.Clear();
                foreach (string[] Valores in value)
                {
                    DgvListaPartidos.Rows.Add(Valores);
                }
            }
        }

        #endregion

        private void BtnNuevoPartido_Click(object sender, EventArgs e)
        {

        }
    }
}
